  /*
  复制数组
  const newarr = ordarr.slice()
  const newarr = [...ordarry]
  定时器最小时间间隔：
  在苹果机上的最小时间间隔是10ms，在Windows系统上的最小时间间隔大约是15ms。
  
    移动端的设备提供了一个事件：orientationChange事件
    这个事件是苹果公司为safari中添加的。以便开发人员能够确定用户何时将设备由横向查看切换为纵向查看模式。
    只要用户改变了设备的查看模式，就会触发 orientationChange事件。此时的event对象不包含任何有价值的信息，
    因为唯一相关信息可以通过window.orientation访问到

    Firefox中定义的最小时间间隔是10ms，而HTML5规范中定义的最小时间间隔是4ms
    var windW =  window.innerWidth  // 视图区大小 所有流浏览器
    var windH =  window.innerHeight
    window.screenLeft
    window.screenTop
    window.screen.availWidth 返回当前屏幕宽度(空白空间)
    window.screen.availHeight 返回当前屏幕高度(空白空间)
    window.screen.width 返回当前屏幕宽度(分辨率值)
    window.screen.height 返回当前屏幕高度(分辨率值)
    window.document.body.offsetHeight; 返回当前网页高度
    window.document.body.offsetWidth; 返回当前网页宽度

setImmediate(function(){
    console.log(1);
},0);
setTimeout(function(){
    console.log(2);
},0);
new Promise(function(resolve){
    console.log(3);
    resolve();
    console.log(4);
}).then(function(){
    console.log(5);
});
console.log(6);
process.nextTick(function(){
    console.log(7);
});
console.log(8)

process.nextTick > promise.then > setTimeout > setImmediate。

    dom.replaceChild(gereratetNode,root)
    string.split('.')
    arry.shift()

    事件对象
        在触发 DOM 上的某个事件时，会产生一个事件对象 event，这个对象中包含着所有与事件有关的
        信息。包括导致事件的元素、事件的类型以及其他与特定事件相关的信息。例如，鼠标操作导致的事件
        对象中，会包含鼠标位置的信息，而键盘操作导致的事件对象中，会包含与按下的键有关的信息。所有
        浏览器都支持 event 对象，但支持方式不同。


        “DOM2级事件”定义了两个方法，用于处理指定和删除事件处理程序的操作：
        addEventListener() 和 removeEventListener()。

        所有 DOM 节点中都包含这两个方法，并且它们都接受 3 个参数：要处理的事件名、作为事件处理程序的函数和一个布尔值。
    最后这个布尔值参数如果是 true，表示在捕获阶段调用事件处理程序；如果是 false，表示在冒泡阶段调用事件处理程序。

1. 数据属性  ，因此在 JavaScript 中不能直接访问它们。为了表示特性是内部值，该规范把它们放在了两对儿方括号中，

        [[configurable]],[[Enumerable]],[[Writable]],[[Value]]

        Object.defineProperty() 修改数据属性  接收三个参数:属性所在的对象、属性的名字和一个描述符对象

        如果把一个对象的数据属性[[writable]] 设置成false 在严格模式下修改他会报错.

        把 [[configurable]] 设置为 false，表示不能从对象中删除属性。如果对这个属性调用 delete，则
    在非严格模式下什么也不会发生，而在严格模式下会导致错误。而且，一旦把属性定义为不可配置的，
    就不能再把它变回可配置了。

2. 访问器属性

    访问器属性不包含数据值；它们包含一对儿 getter 和 setter 函数（不过，这两个函数都不是必需的）。

    get和set方法内部的this都指向obj，这意味着get和set函数可以操作对象内部的值


  */
